package com.hsylient.javase.chapter02.demo02.demo02;

import lombok.Getter;

import java.util.Date;

/**
 * 静态内部类
 *
 * 一个类的静态成员独立于这个类的任何一个对象存在，只要在具有访问权限的地方，我们就可以通过 类名.静态成员名 的形式来访问这个静态成员
 * 同样的，静态内部类也是作为一个外部类的静态成员而存在
 * 创建一个类的静态内部类对象不需要依赖其外部类对象
 */
public class InnerClass {

    public String sex;
    private static Date birthday;

    // 外部类可以访问静态内部类中所有权限的属性
    public void getInnerClassField() {
        Student student = new Student();
        System.out.println(student.name);
        System.out.println(student.age);
    }

    @Getter
    public static class Student {
        public String name = "hsylient";
        private Integer age = 20;
        // 静态内部类中可以存在静态字段
        private static Double money = 20.0;

        /**
         * 静态内部类不能访问外部类中的非静态属性的属性
         */
        public void getOutClassField() {

            // System.out.println(sex);
            System.out.println(birthday);
        }
    }
}
